浅谈正则表达式之优化

您所在的位置:网站首页 excel vba 正则表达式 sub 提取日期 浅谈正则表达式之优化

浅谈正则表达式之优化

2023-06-26 13:29| 来源: 网络整理| 查看: 265

正则表达式是计算机科学的一个概念,很多语言都实现了它。正则表达式使用一些特定的元字符来检索、匹配以及替换符合规则的字符串。

      构造正则表达式语法的元字符,由普通字符、标准字符、限定字符(量词)、定位字符(边界字符)组成。详情可见下图:

正则表达式引擎

      正则表达式是一个用正则符号写出的公式,程序对这个公式进行语法分析,建立一个语法分析树,再根据这个分析树结合正则表达式的引擎生成执行程序(这个执行程序我们把它称作状态机,也叫状态自动机),用于字符匹配。

     正则表达式引擎就是一套核心算法,用于建立状态机。

实现正则表达式引擎的方式有两种:DFA 自动机(Deterministic Final Automata 确 定有限状态自动机)和 NFA 自动机(Non deterministic Finite Automaton 非确定有限 状态自动机)。

      构造 DFA 自动机的代价远大于 NFA 自动机,但 DFA 自动机的执行效率高于 NFA 自动机。

      假设一个字符串的长度是 n,如果用 DFA 自动机作为正则表达式引擎,则匹配的时间复杂度为 O(n);如果用 NFA 自动机作为正则表达式引擎,由于 NFA 自动机在匹配过程中存在 大量的分支和回溯,假设 NFA 的状态数为 s,则该匹配算法的时间复杂度为 O(ns)。

      NFA 自动机的优势是支持



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3